/**
 * 自定义验证器
 */

/**
 * 确认密码验证器
 * @param {Ref} passwordRef - 密码字段的ref
 * @returns {Function}
 */
export function confirmPasswordValidator(passwordRef) {
  return (rule, value, callback) => {
    if (value === '') {
      callback(new Error('请再次输入密码'))
    } else if (value !== passwordRef.value) {
      callback(new Error('两次输入密码不一致'))
    } else {
      callback()
    }
  }
}

/**
 * 数字范围验证器
 * @param {number} min - 最小值
 * @param {number} max - 最大值
 * @returns {Function}
 */
export function numberRangeValidator(min, max) {
  return (rule, value, callback) => {
    if (value === '' || value === null || value === undefined) {
      callback()
      return
    }
    const num = Number(value)
    if (isNaN(num)) {
      callback(new Error('请输入有效的数字'))
    } else if (num < min || num > max) {
      callback(new Error(`请输入${min}到${max}之间的数字`))
    } else {
      callback()
    }
  }
}

/**
 * 验证邮箱格式
 * @param {string} email - 邮箱
 * @returns {boolean}
 */
export function isValidEmail(email) {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
  return emailRegex.test(email)
}

/**
 * 验证手机号格式
 * @param {string} phone - 手机号
 * @returns {boolean}
 */
export function isValidPhone(phone) {
  const phoneRegex = /^1[3-9]\d{9}$/
  return phoneRegex.test(phone)
}
